package com.gitee.zhanyao.common.util;

import org.apache.commons.lang3.StringUtils;

import java.util.Set;

/**
 * 数据转换工具类
 */
public class ConvertUtil {

    private ConvertUtil() {
    }

    /**
     * 将127.0.0.1形式转换成十进制整数形式的ip地址
     *
     * @param strIp 127.0.0.1形式 IP 地址
     * @return 十进制整数形式的ip地址
     */
    public static long ipToLong(String strIp) {
        if (StringUtils.isBlank(strIp)) {
            return 0;
        }
        String[] ipArr = strIp.split("\\.");
        if (ipArr.length != 4) {
            return 0;
        }
        long[] ip = new long[4];
        ip[0] = Long.parseLong(ipArr[0]);
        ip[1] = Long.parseLong(ipArr[1]);
        ip[2] = Long.parseLong(ipArr[2]);
        ip[3] = Long.parseLong(ipArr[3]);
        return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3];
    }

    /**
     * 将十进制整数形式转换成127.0.0.1形式的ip地址
     *
     * @param longIp 十进制整数形式的ip地址
     * @return 127.0.0.1形式 IP 地址
     */
    public static String longToIP(long longIp) {
        StringBuilder sb = new StringBuilder("");
        // 直接右移24位
        sb.append(String.valueOf((longIp >>> 24)));
        sb.append(".");
        // 将高8位置0，然后右移16位
        sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));
        sb.append(".");
        // 将高16位置0，然后右移8位
        sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));
        sb.append(".");
        // 将高24位置0
        sb.append(String.valueOf((longIp & 0x000000FF)));
        return sb.toString();
    }

    /**
     * 将 Set 转换为 String
     * @param set 集合
     * @param separator 分隔符
     * @return 字符串
     */
    public static String setToString(Set<String> set, String separator) {
        StringBuffer sb = new StringBuffer();
        for (String str : set) {
            sb.append(str);
            sb.append(separator);
        }
        sb.delete(sb.length() - 1, sb.length());
        return sb.toString();
    }

}
